#
# This file is a part of the open-eBackup project.
# This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
# If a copy of the MPL was not distributed with this file, You can obtain one at
# http://mozilla.org/MPL/2.0/.
#
# Copyright (c) [2024] Huawei Technologies Co.,Ltd.
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
#

from functools import wraps

from gaussdbt.commons.const import log


def function_debug_log(func):
    """
    功能描述： 函数开始-结束添加日志打印
    """

    @wraps(func)
    def decorator(*args, **kwargs):
        log.debug(f"Enter {func.__name__}")
        try:
            ret = func(*args, **kwargs)
        except Exception:
            log.error(f"Raise exception at {func.__name__}")
            return False
        log.debug(f"Exit with [{ret}], {func.__name__}")
        return ret

    return decorator
